diff --git a/src/_pytest/unittest.py b/src/_pytest/unittest.py
index 773f545af..7d9851466 100644
--- a/src/_pytest/unittest.py
+++ b/src/_pytest/unittest.py
@@ -220,10 +220,9 @@ class TestCaseFunction(Function):
             # arguably we could always postpone tearDown(), but this changes the moment where the
             # TestCase instance interacts with the results object, so better to only do it
             # when absolutely needed
-            if self.config.getoption("usepdb"):
+            if self.config.getoption("usepdb") and not getattr(self._testcase, "__unittest_skip__", False):
                 self._explicit_tearDown = self._testcase.tearDown
                 setattr(self._testcase, "tearDown", lambda *args: None)
-
             # we need to update the actual bound method with self.obj, because
             # wrap_pytest_function_for_tracing replaces self.obj by a wrapper
             setattr(self._testcase, self.name, self.obj)
@@ -231,6 +230,7 @@ class TestCaseFunction(Function):
                 self._testcase(result=self)
             finally:
                 delattr(self._testcase, self.name)
+            print(f"DEBUG: tearDown postponed: {self._explicit_tearDown is not None}, test name: {self.name}")
 
     def _prunetraceback(self, excinfo):
         Function._prunetraceback(self, excinfo)
